package com.cooksys.film_rental.bo;

import java.util.List;

import com.cooksys.film_rental.model.Actor;
import com.cooksys.film_rental.model.Film;
import com.cooksys.film_rental.model.FilmActor;

/**
 * Business object for the {@link Actor} class
 * 
 * @author Peter Zastoupil
 * 
 */
public interface ActorBo {

	/**
	 * 
	 * @param actorId
	 *            the actorId to search by
	 * @return an {@link Actor} object that corresponds to the given actorId
	 */
	public Actor getActorByActorId(Short actorId);

	/**
	 * 
	 * @param actorId
	 *            a String representation of the actorId to search by
	 * @return an {@link Actor} object that corresponds to the given actorId
	 */
	public Actor getActorbyActorId(String actorId);

	/**
	 * Searches the database for an {@link Actor} objects that match the given
	 * partial name
	 * 
	 * @param partialName
	 *            a String that contains search terms separated by whitespace
	 * @return a List of {@link Actor} objects that match the given partial name
	 */
	public List<Actor> searchActorsByPartialName(String partialName);

	/**
	 * 
	 * @param filmActor
	 *            the {@link FilmActor} to search by
	 * @return the {@link Actor} associated with the given filmActor
	 */
	public Actor getActorByFilmActor(FilmActor filmActor);

	/**
	 * 
	 * @param film
	 *            the {@link Film} to search by
	 * @return a List of {@link Actor} objects that are associated with the
	 *         given Film
	 */
	public List<Actor> searchActorsByFilm(Film film);

	/**
	 * 
	 * @return a List of all {@link Actor} objects in the database
	 */
	public List<Actor> getAllActors();

}
